package com.yc.cloud.sms.sevice.impl;

import com.yc.cloud.sms.dto.SmsParam;
import com.yc.cloud.sms.response.SmsResponse;
import com.yc.cloud.sms.sevice.SmsService;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public abstract class AbstractSmsService implements SmsService {

    @Override
    public SmsResponse send(SmsParam param) {
        try {
            return doSend(param);
        } catch (Exception e) {
            log.error("短信发送失败", e);
            return SmsResponse.builder().success(false).errorCode("500").errorMessage(e.getMessage()).build();
        }
    }

    /**
     * 具体的短信发送实现
     * 
     * @param param 短信参数
     * @return 是否发送成功
     */
    protected abstract SmsResponse doSend(SmsParam param);

    /**
     * 获取短信服务商名称
     * 
     * @return 服务商名称
     */
    public abstract String getProvider();
}